The present embodiments relate to volume rendering. Interactive volume rendering is provided by powerful workstations with custom hardware architecture. The workstations are used for quality visualization without or with limited rendering artifacts. More recently, consumer graphics hardware allows interactive visualization at a low cost.
Hardware acceleration for volume rendering allows creation of new techniques for interactive visualization of 3D datasets, such as new rendering techniques. Each new technique brings new concepts or optimizations that contribute to visualization of a volume, such as in the field of medical imaging.
One example device for hardware acceleration is a graphics processing unit (GPU). GPU programming is used in scientific and other visualization. GPU programming offers new opportunities for processing and shading 3D volumes. As speed and flexibility increases within the field of consumer level graphics cards, hardware acceleration using consumer hardware is a growing research field within volume rendering.
For a given application, a rendering pipeline of the acceleration hardware is programmed. The monolithic code loads volume data, converters the volume data to texture, performs any classification, applies any shading, and renders to a two-dimensional display. Different options are available to the programmer for implementing the rendering process. The options are chosen based on the application, such as choosing a rendering style, frame rate, and shading appropriate for the relevant information. When a new application is desired, a new rendering pipeline is programmed into the acceleration hardware. This process is cumbersome. The ability to rapidly prototype a rendering pipeline or program is limited.
Some software framework may assist in rendering or programming. Open Inventor, by Silicon Graphics, Inc., provides a scene graph framework for programming in rendering. Different objects to be rendered may be separately formed and indicated as nodes in a scene graph. A monolithic rendering pipeline is applied as a single node in the scene graph for rendering the different objects. Scene graph creation can be further facilitated within a visual programming environment application. However, programming a new rendering pipeline is still cumbersome.